{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 05 衡量回归算法的标准，MSE(平方) vs MAE(绝对值)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import datasets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 波士顿房产数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "boston = datasets.load_boston()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".. _boston_dataset:\n",
      "\n",
      "Boston house prices dataset\n",
      "---------------------------\n",
      "\n",
      "**Data Set Characteristics:**  \n",
      "\n",
      "    :Number of Instances: 506 \n",
      "\n",
      "    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n",
      "\n",
      "    :Attribute Information (in order):\n",
      "        - CRIM     per capita crime rate by town\n",
      "        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.\n",
      "        - INDUS    proportion of non-retail business acres per town\n",
      "        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
      "        - NOX      nitric oxides concentration (parts per 10 million)\n",
      "        - RM       average number of rooms per dwelling\n",
      "        - AGE      proportion of owner-occupied units built prior to 1940\n",
      "        - DIS      weighted distances to five Boston employment centres\n",
      "        - RAD      index of accessibility to radial highways\n",
      "        - TAX      full-value property-tax rate per $10,000\n",
      "        - PTRATIO  pupil-teacher ratio by town\n",
      "        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n",
      "        - LSTAT    % lower status of the population\n",
      "        - MEDV     Median value of owner-occupied homes in $1000's\n",
      "\n",
      "    :Missing Attribute Values: None\n",
      "\n",
      "    :Creator: Harrison, D. and Rubinfeld, D.L.\n",
      "\n",
      "This is a copy of UCI ML housing dataset.\n",
      "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n",
      "\n",
      "\n",
      "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n",
      "\n",
      "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n",
      "prices and the demand for clean air', J. Environ. Economics & Management,\n",
      "vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n",
      "...', Wiley, 1980.   N.B. Various transformations are used in the table on\n",
      "pages 244-261 of the latter.\n",
      "\n",
      "The Boston house-price data has been used in many machine learning papers that address regression\n",
      "problems.   \n",
      "     \n",
      ".. topic:: References\n",
      "\n",
      "   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n",
      "   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(boston.DESCR)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',\n",
       "       'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston.feature_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = boston.data[:,5] # 只使用房间数量这个特征 , 就是所有行的第五列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506,)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.shape # 506个样本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = boston.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506,)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "注意到 50 就是最上面好多点 可能是数据采集的上限决定的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y) \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50.0"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.max(y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "把50去掉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = x[y < 50.0]\n",
    "y = y[y < 50.0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(490,)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(490,)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用简单线性回归法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from playML.model_selection import train_test_split\n",
    "\n",
    "# 测试集分割\n",
    "x_train, x_test, y_train, y_test = train_test_split(x, y, seed=666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(392,)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(392,)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(98,)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(98,)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "from playML.SimpleLinearRegression import SimpleLinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SimpleLinearRegression()"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg = SimpleLinearRegression()\n",
    "reg.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7.8608543562689555"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg.a_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-27.459342806705543"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg.b_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_train, y_train)\n",
    "plt.plot(x_train, reg.predict(x_train), color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_train, y_train) # 训练数据\n",
    "plt.scatter(x_test, y_test, color=\"c\") #测试数据\n",
    "plt.plot(x_train, reg.predict(x_train), color='r') # 预测\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_predict = reg.predict(x_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.156602134387438"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse_test = np.sum((y_predict - y_test)**2) / len(y_test)\n",
    "mse_test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### RMSE"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这样开方 量纲就一致了 原数据房价单位是万美元, 这里就是差了4.9万美元"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.914936635846635"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import sqrt\n",
    "\n",
    "rmse_test = sqrt(mse_test) #上面的开方\n",
    "rmse_test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MAE"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "absolute取绝对值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.5430974409463873"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mae_test = np.sum(np.absolute(y_predict - y_test))/len(y_test)\n",
    "mae_test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 封装我们自己的评测函数\n",
    "\n",
    "代码参见 [这里](playML/metrics.py)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "from playML.metrics import mean_squared_error\n",
    "from playML.metrics import root_mean_squared_error\n",
    "from playML.metrics import mean_absolute_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.156602134387438"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.914936635846635"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "root_mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.5430974409463873"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_absolute_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### scikit-learn中的MSE和MAE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.metrics import mean_absolute_error"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "MSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.156602134387438"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "MAE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.5430974409463873"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_absolute_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# R Square"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6129316803937322"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " 1- mean_squared_error(y_test,y_predict)/np.var(y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
